package com.z.system.service;

import java.util.List;
import java.util.Set;
import java.util.UUID;

import com.z.system.model.Permission;
import com.z.system.vo.Menu;

/**
 * 权限服务接口
 */
public interface PermissionService {

    /**
     * 根据ID获取权限
     */
    Permission getPermissionById(UUID id);

    /**
     * 根据权限标识获取权限
     */
    Permission getPermissionByPermission(String permission);

    /**
     * 获取所有权限
     */
    List<Permission> getAllPermissions();

    /**
     * 根据角色ID获取权限
     */
    List<Permission> getPermissionsByRoleId(UUID roleId);

    /**
     * 保存权限
     */
    Permission savePermission(Permission permission);

    /**
     * 更新权限
     */
    Permission updatePermission(Permission permission);

    /**
     * 删除权限
     */
    void deletePermission(UUID id);

    /**
     * 批量删除权限
     */
    void deletePermissions(Set<UUID> ids);

    /**
     * 获取当前登录用户的菜单
     */
    List<Menu> getCurrentUserMenus();

    /**
     * 获取所有权限并转换为前端友好的菜单树结构
     * 与getCurrentUserMenus返回相同格式的数据
     * 
     * @return 菜单树结构列表
     */
    List<Menu> getAllPermissionsAsMenuTree();
}